#ifndef __LIB_AGORA_CORE_GUEST_H__
#define __LIB_AGORA_CORE_GUEST_H__

/*!
 * \file Guest.h
 * \brief Regroupe les outils  decrivant une connection de type invite
 */

#ifndef _WIN32
#include <sys/types.h>
#include <sys/socket.h>
#else
#include "winsock2.h"
#endif
#include "Connection.h"
#include <string>

/*! \namespace Network
 * 
 * espace de nommage regroupant les classes et outils necessaires a la gestion des connections reseaux
 */

namespace AgoraCore
{

	/*! \class Guest
   * \brief classe representant une connection invite
   *
   *  La classe Guest herite des attributs de la classe Connection et apporte a celle-ci des methodes specifiques a la gestion d'une connection de type invite
   */
	class	Guest : public Connection
	{
	public:
		/*!
     *  \brief Constructeur
     *
     *  Constructeur de la classe Guest
     *
     */
		Guest();
		/*!
     *  \brief Destructeur
     *
     *  Destructeur de la classe Guest
     */
		~Guest();
		/*!
	*	\brief Initialise la connection
	*	
	*	Initialise une connection de type invite ayant la capacite de se connecter a un serveur.
	*
	*	\return Si la methode echoue un code d'erreur est retourne sinon 0 est renvoye
	*/
		unsigned int	Init();
		/*!
	*	\brief Effectue une tentative de connection
	*	
	*	Permet d'etablir une connection a un serveur identifie par l'adresse IP et le port fournis en parametres
	*
	*	\param address : Adresse IP sur laquelle etablir une connection
	*	\param port : Port de communication sur lequel transiteront les informations
	*	\return Si la methode echoue un code d'erreur est retourne sinon 0 est renvoye
	*/
		unsigned int	Connect(const std::string& address, unsigned short int port);
	};
}

#endif
